QaNote
Testing Mindset: Testing is the process of executing a program with the intent of finding errors. =Test Types= * Integration tests, ...different units of work are combined into a workflow. * Functional tests, corresponds to testing application use cases. * Stress and load tests, ...how well will the application perform when many people are using it at once. * Acceptance tests, ...the application must also meet the customer’s needs. acceptance{ stress/load{ functional{ integration{ unit; } // out of integration } // out of functional } // out of stress/load } // out of acceptance * Unit Testing Three flavors of unit tests: logic, integration, and functional. functional unit test{ integration unit test{ logic unit test; } // out of integration } ; Logic unit test : A test that exercises code by focusing on a single method. You can control the boundaries of a given test method using mock objects or stubs. ; Integration unit test : A test that focuses on the interaction between components in their real environment (or part of the real environment). For example, code that accesses a database has tests that effectively call the database ; Functional unit test : A test that extends the boundaries of integration unit testing to confirm a stimulus response. =Testing Techniques= * Black Box Test *# Functionality Testing *# GUI Testing *# Performance Testing *# Stress and Load Testing *# Compatibility Test * White Box Testing *# Code Coverage *# Path Coverage *# Code Analysis * Manual Test * Automation Test *# Development Process Study *# Testing Tools Selection *# Implementation =Strategies= * Black-Box Testing ** exhaustive input testing (impractical) ** unconcerned about the internal behavior and structure; ** concentrate on finding circumstances in which the program does not behave according to its specifications. * White-Box Testing ** aka: logic-driven testing (may NOT cover the specification) ** exhaustive path testing (impractical, missing critical path, insufficient without exhaustive input test) =Principles= * Definition of expected result *# An explicit description of the input *# A precise description of the correct output for that set of input =Full Life cycle= # Identify Requirements # Acceptance Criteria # Strategy and Design # Planning # Executing # Defect Tracking and Bug Fix # Review and Audit # Acceptance and Baseline # Identify Requirements # ... =Testing Process= * V-Model open =Methodologies= * Agile click * Waterfall click =Agile Testing Challenges= * Team may not value testers; * Testers may not value team; * Unclear role of testers on the team; * Testing is often squeezed to the deadlines; * Developers and tester are often in different operational silos; * Team may not have the skills/domain expertise/time/attention to develop/execute test cases effectively. Reference click =Automation Testing= Automation Frameworks Why automation? * Provides safety net * Supports rapid iterations * Provides footholds to keep notching upward * Provides rapid feedback * Focuses effort on what is valuable * Frees people to do their best work Unit Testing * JUnit * TestNG Web Testing Selenium BDD * Cucumber * Cucumber-jvm * concordion =Continuous Integration= * Jenkins =Mobile Test= Likely Failure Criteria 1. You are using indexes in too many places so as to identify elements in your screen. 2. You are using Image recognition or OCR extensively and not for content verification. 3. When running the same script on a device with different screen sizes, it never works on the first try. 4. Scrolling the device screen is coordinate-based and very hard to stabilize. 5. You are wasting more time in stabilizing your tests than on building them. 6. You feel frustrated every time you open the test environment due to its slowness and unpredictability 7. You are working for several months but only have a dozen tests 8. You can’t remember the last time that all the tests ran successfully. 9. You aren't controlling all the parts of your automation environment such as devices and versions 10. You are masking the project status from your managers. 11. You don’t have a process where the tests run 24/7. 12. Deploying the build production (IPA / APK) from the R&D is a manual process.